package com.zenithmind.disk.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 文件类型枚举
 * 遵循开闭原则：新增文件类型时只需添加枚举值
 */
@Getter
@AllArgsConstructor
public enum FileType {
    
    /**
     * 文件
     */
    FILE(0, "文件"),
    
    /**
     * 目录
     */
    DIRECTORY(1, "目录");
    
    private final Integer code;
    private final String description;
    
    /**
     * 根据代码获取枚举
     * @param code 类型代码
     * @return 对应的枚举值
     */
    public static FileType fromCode(Integer code) {
        if (code == null) {
            return null;
        }
        
        for (FileType type : values()) {
            if (type.code.equals(code)) {
                return type;
            }
        }
        
        throw new IllegalArgumentException("未知的文件类型代码: " + code);
    }
    
    /**
     * 检查是否为目录
     * @return true如果是目录
     */
    public boolean isDirectory() {
        return this == DIRECTORY;
    }
    
    /**
     * 检查是否为文件
     * @return true如果是文件
     */
    public boolean isFile() {
        return this == FILE;
    }
}
